package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.UserRegisterCensorAddDTO;
import org.jsola.hr.dto.UserRegisterCensorAdminUpdateDTO;
import org.jsola.hr.query.UserRegisterCensorQuery;
import org.jsola.hr.vo.UserRegisterCensorListVO;
import org.jsola.hr.vo.UserRegisterCensorVO;

import java.util.List;

/**
 * 注册审核表
 *
 * @author zhr
 */
@Api(tags = "hr-注册审核表")
public interface IUserRegisterCensorControllerAPI {

    /**
     * 新增注册审核表
     * @param userRegisterCensorAddDTO 注册审核表新增实体
     * @return 注册审核表展示对象
     */
    @ApiOperation(value = "新增注册审核表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userRegisterCensorAddDTO", dataType = "UserRegisterCensorAddDTO", value = "新增注册审核表", paramType = "body")
    })
    Result<UserRegisterCensorVO> save(UserRegisterCensorAddDTO userRegisterCensorAddDTO);


    /**
     * 修改注册审核表
     * @param userRegisterCensorAdminUpdateDTO 注册审核表
     * @return 更新数量
     */
    @ApiOperation(value = "更新审核状态")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userRegisterCensorAdminUpdateDTO", dataType = "UserRegisterCensorAdminUpdateDTO", value = "修改注册审核表", paramType = "body")
    })
    Result<Integer> update(UserRegisterCensorAdminUpdateDTO userRegisterCensorAdminUpdateDTO);




    /**
     * 删除单个注册审核表，彻底删除
     * @param userRegisterCensorId 注册审核表id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个注册审核表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userRegisterCensorId", dataType = "String", value = "注册审核表id", paramType = "path")
    })
    Result<Integer> delete(String userRegisterCensorId);


    /**
     * 批量删除注册审核表，彻底删除
     * @param userRegisterCensorIds 注册审核表id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除注册审核表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userRegisterCensorIds", dataType = "String[]", value = "注册审核表id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(String[] userRegisterCensorIds);


    /**
     * 根据注册审核表id查询注册审核表详情
     * @param userRegisterCensorId 注册审核表id
     * @return 注册审核表详情
     */
    @ApiOperation(value="根据注册审核表id查询注册审核表详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userRegisterCensorId", dataType = "String", value = "注册审核表id", paramType = "path")
    })
    Result<UserRegisterCensorVO> findById(String userRegisterCensorId);


    /**
     * 查询注册审核表
     * @param userRegisterCensorQuery 注册审核表查询参数
     * @return page
     */
    @ApiOperation(value="查询注册审核表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userRegisterCensorQuery", dataType = "UserRegisterCensorQuery", value = "注册审核表查询参数", paramType = "query")
    })
    Result<List<UserRegisterCensorListVO>> listAll(UserRegisterCensorQuery userRegisterCensorQuery);


     /**
     * 分页查询注册审核表
     * @param userRegisterCensorQuery 注册审核表查询参数
     * @return page
     */
    @ApiOperation(value="分页查询注册审核表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userRegisterCensorQuery", dataType = "UserRegisterCensorQuery", value = "注册审核表查询参数", paramType = "query")
    })
    Result<Page<UserRegisterCensorListVO>> page(UserRegisterCensorQuery userRegisterCensorQuery);

    /**
     * 注册审核
     * @param userRegisterCensorAddDTO 注册审核表查询参数
     * @return page
     */
    @ApiOperation(value="注册审核提交注册审核表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userRegisterCensorAddDTO", dataType = "UserRegisterCensorAddDTO", value = "注册审核表注册参数", paramType = "body")
    })
    Result<Integer> submitRegistrationReview(UserRegisterCensorAddDTO userRegisterCensorAddDTO);


    /**
     * 未审核数量
     * @return Integer
     */
    @ApiOperation(value="未审核数量")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userRegisterCensorQuery", dataType = "UserRegisterCensorQuery", value = "注册审核表查询参数", paramType = "query")
    })
    Result<Integer> unauditedCount(UserRegisterCensorQuery userRegisterCensorQuery);

}

